package cn.bugstack.chatgpt.data.domain.order.repository;

import cn.bugstack.chatgpt.data.domain.order.model.aggregates.CreateOrderAggregate;
import cn.bugstack.chatgpt.data.domain.order.model.entity.PayOrderEntity;
import cn.bugstack.chatgpt.data.domain.order.model.entity.ProductEntity;
import cn.bugstack.chatgpt.data.domain.order.model.entity.ShopCartEntity;
import cn.bugstack.chatgpt.data.domain.order.model.entity.UnpaidOrderEntity;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/**
 *
 * @description 订单仓储接口
 */
public interface IOrderRepository {
    // 查询未支付订单
    UnpaidOrderEntity queryUnpaidOrder(ShopCartEntity shopCartEntity);

    // 查询商品
    ProductEntity queryProduct(Integer productId);

    // 下单
    void saveOrder(CreateOrderAggregate aggregate);

    // 更改下单信息
    void updateOrderPayInfo(PayOrderEntity payOrderEntity);

    // 变更：订单支付成功
    boolean changeOrderPaySuccess(String orderId, String transactionId, BigDecimal totalAmount, Date payTime);

    // 创建聚合对象
    CreateOrderAggregate queryOrder(String orderId);

    // 货物发送
    void deliverGoods(String orderId);

    // 查询补货订单
    List<String> queryReplenishmentOrder();

    /**
     * 查询有效期内，未接收到支付回调的订单
     */
    List<String> queryNoPayNotifyOrder();

    /**
     * 查询超时15分钟，未支付订单
     */
    List<String> queryTimeoutCloseOrderList();

    // 变更：订单支付关闭
    boolean changeOrderClose(String orderId);

    /**
     * 查询商品列表
     */
    List<ProductEntity> queryProductList();
}
